package com.xiaoshuidi.cloud.module.contract.controller.admin.contract.vo.stay;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.xiaoshuidi.cloud.module.contract.service.contract.dto.ContractStayRoomEquipmentDTO;
import com.xiaoshuidi.cloud.module.contract.util.date.DateUtils;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;

import javax.validation.constraints.NotNull;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.util.List;

import static com.xiaoshuidi.cloud.framework.common.util.date.DateUtils.TIME_ZONE_DEFAULT;

/**
* 交房退房 Base VO，提供给添加、修改、详细的子 VO 使用
* 如果子 VO 存在差异的字段，请不要添加到这里，影响 Swagger 文档生成
*/
@Data
public class ContractStayBaseVO {
    /**
     * 合同id
     */
    @Schema(description = "合同id")
    @NotNull(message = "合同id不能为空")
    private Long roomContractId;
    /**
     * 同住人id
     */
    @Schema(description = "同住人id")
    private Long roommateId;
    /**
     * 交房日期
     */
    @Schema(description = "交房日期")
    @NotNull(message = "交房日期不能为空")
    @DateTimeFormat(pattern = DateUtils.FORMAT_DATE)
    @JsonFormat(pattern = DateUtils.FORMAT_DATE, timezone = TIME_ZONE_DEFAULT)
    private LocalDate deliveryDate;
    /**
     * 入住交房确认时间
     */
    @Schema(description = "入住交房确认时间")
    @DateTimeFormat(pattern = DateUtils.FORMAT_DATE)
    @JsonFormat(pattern = DateUtils.FORMAT_DATE, timezone = TIME_ZONE_DEFAULT)
    private LocalDateTime deliveryConfirmTime;
    /**
     * 附件
     */
    @Schema(description = "附件")
    private List<String> annexFile;

    /**
     * 承租人
     */
    @Schema(description = "承租人")
    private String renterName;
    /**
     * 交房人
     */
    @Schema(description = "交房人")
    private String deliverer;

    /**
     * 房间资产
     */
    private String roomAsset;

    /**
     * 房间资产
     */
    private List<ContractStayRoomEquipmentDTO> roomAssetDtoList;

    /**
     * 入住交房状态
     */
    private String deliveryStatus;


}
